package org.dxy.domain.model.aggregate;

import org.dxy.domain.command.route.*;
import org.dxy.domain.model.aggregate.impl.RouteAggRoot;

/**
 * @description: 工艺路线聚合根接口
 * @author: dxy
 * @createTime: 2025/6/12 22:52
 */
public interface Route extends AggregateRoot {

    /**
     * 更新工艺路线
     */
    void update(UpdateRouteCommand command);

    /**
     * 禁用工艺路线
     */
    void disable(RouteDisableCommand command);

    /**
     * 启用工艺路线
     */
    void enable(RouteEnableCommand command);

    /**
     * 分配工艺
     */
    void assignProcesses(RouteAssignProcessesCommand command);

    /**
     * 移除工艺步骤
     */
    void removeStep(RouteRemoveStepCommand command);

    /**
     * 重新排序工艺步骤
     */
    void reorderSteps(RouteReorderStepCommand command);

    /**
     * 更新工艺步骤
     */
    void updateStep(RouteStepUpdateCommand command);

    /**
     * 发布工艺路线
     */
    void publish(RoutePublishCommand command);

    /**
     * 归档工艺路线
     */
    void archive(RouteArchiveCommand command);

    /**
     * 删除工艺路线
     */
    void delete(DeleteRouteCommand command);

    /**
     * 创建工艺路线
     */
    static Route create(Long routeId, CreateRouteCommand command) {
        return RouteAggRoot.create(routeId,command);
    }


} 